/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2013/03/18
* File: EffectPass.h
**/

#pragma once

namespace HY
{
EffectTechnique;
class ParameterManager;
class RenderState;
class EffectPass
{
	friend class EffectTechnique;
public:
	EffectTechnique* getTechnique() const;

	const std::string& getName() const;

	RenderState& getRenderState();
	const RenderState& getRenderState() const;

	bool loadVShader(const std::string& file_name);
	bool loadPShader(const std::string& file_name);

	Program* getProgram() const;

protected:
	EffectPass(EffectTechnique* eff_technique);
	virtual ~EffectPass();

protected:
	EffectTechnique*					eff_technique_;
	std::string							name_;
	Color								color_;
	RenderState							render_state_;
	VertexShader*						vs_;
	PixelShader*						ps_;
	Program*						program_;
};

}